package evemanutool.gui.general.tabel;
import java.awt.BorderLayout;
import java.util.Collection;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.SwingConstants;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import evemanutool.constants.DBConstants;
@SuppressWarnings("serial")
public class ScrollableTablePanel<T> extends JPanel implements DBConstants, SwingConstants{
//Table components.
private final AdjustingTable table;
private final SimpleTableModel<T> model;
private final RowSorter<TableModel> sorter;
public ScrollableTablePanel(SimpleTableModel<T> model) {
//Set layout.
setLayout(new BorderLayout());
//Setup table.
this.model = model;
table = new AdjustingTable(model);
sorter = new TableRowSorter<TableModel>(model);
table.setRowSorter(sorter);
table.getTableHeader().setReorderingAllowed(false);
//Renderer.
table.setDefaultRenderer(Long.class, new LongNumberCellRenderer(""));
table.setDefaultRenderer(Double.class, new DecimalNumberCellRenderer(""));
table.setDefaultRenderer(Integer.class, new IntegerNumberCellRenderer(""));
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.getTableHeader().setDefaultRenderer(new HeaderRenderer(table, model.getColumnAlign(), model.getEditableColumns()));
//Fixes background color of boolean cells.
((JComponent) table.getDefaultRenderer(Boolean.class)).setOpaque(true);
//ScrollPane.
JScrollPane pane = new JScrollPane(table);
add(pane, BorderLayout.CENTER);
}
public void setData(Collection<T> l) {
model.setData(l);
}
public JTable getTable() {
return table;
}
public SimpleTableModel<T> getModel() {
return model;
}
public RowSorter<TableModel> getSorter() {
return sorter;
}
}